home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 1998 November / IRIX 6.5.2 Base Documentation November 1998.img / usr / share / catman / u_man / cat1 / dmedia / diskalign.z / diskalign
Text File  |  1998-10-30  |  35KB  |  595 lines

  1.  
  2.  
  3.  
  4. ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))                                                      ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      diskalign - XLV Aligned Disk Striping Utility
  10.  
  11. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.      ddddiiiisssskkkkaaaalllliiiiggggnnnn ----nnnn<<<<nnnnaaaammmmeeee>>>> ----rrrr<<<<nnnn>>>>[[[[kkkk||||mmmm||||gggg]]]] ----aaaa<<<<nnnn>>>>[[[[kkkk||||mmmm||||gggg]]]] ''''<<<<tttteeeemmmmppppllllaaaatttteeee>>>>'''' ........
  13.  
  14. DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  15.      This utility is designed to assist in creating striped XLV disk volumes
  16.      for data streaming applications.  There are many factors that must be
  17.      taken into account when creating a striped XLV volume such as stripe
  18.      alignment, restrictions imposed by a filesystem on the volume and by the
  19.      operating system I/O functions such as _r_e_a_d_v(). This tool, in conjunction
  20.      with _d_i_s_k_p_r_e_p and _d_i_s_k_p_e_r_f will help extract maximum performance from a
  21.      striped XLV disk configuration for data streaming applications.
  22.  
  23.      The output of _d_i_s_k_a_l_i_g_n can be piped directly into _x_l_v__m_a_k_e to create an
  24.      XLV volume.
  25.  
  26. OOOOPPPPTTTTIIIIOOOONNNNSSSS
  27.      ----nnnn _n_a_m_e
  28.           Specifies the name of the XLV device for the volume which will
  29.           appear in the /dev/xlv directory. This will also be the name used to
  30.           reference this volume from the XLV management tools such as _x_l_v__m_g_r.
  31.  
  32.      ----rrrr _s_i_z_e[_k|_m|_g]
  33.           Specifies the exact desired I/O request size for a particular
  34.           application in bytes, kilobytes, megabytes or gigabytes ( using
  35.           suffixes ), To achieve correct alignment, _d_i_s_k_a_l_i_g_n may round this
  36.           value up to the nearest appropriate boundary. The final adjusted
  37.           request size will be reflected in the output script for _x_l_v__m_a_k_e.
  38.           For example, in a video streaming application this would be the
  39.           number of bytes per frame.
  40.  
  41.      ----aaaa _a_l_i_g_n_m_e_n_t[_k|_m|_g]
  42.           Specifies the required alignment for the request size in bytes,
  43.           kilobytes, megabytes or gigabytes ( using suffixes ). This is a
  44.           critically important hardware and application dependent parameter.
  45.           See the section below for the details on choosing an appropriate
  46.           alignment size.
  47.  
  48.      <<<<tttteeeemmmmppppllllaaaatttteeee>>>>
  49.           Specifies all the disk devices which compose this XLV striped volume
  50.           and the order in which they appear. This template format is
  51.           described below.  Because the shell interprets the square brackets
  52.           used in the device template syntax, you must enclose each template
  53.           string inside single quotes. Any number of template arguments may be
  54.           supplied.
  55.  
  56. OOOOVVVVEEEERRRRVVVVIIIIEEEEWWWW
  57.      This tool is designed to make life easier when configuring disks into a
  58.      striped XLV volume for high performance data streaming applications. For
  59.      the purpose of this tool, a data streaming application is characterized
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))                                                      ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))
  71.  
  72.  
  73.  
  74.      by a I/O requests of a fixed size ( or multiple of a fixed request size
  75.      ). Obvious examples of such applications are uncompressed video streaming
  76.      to or from disk, database tiled texture paging and telemetry applications
  77.      with very high disk bandwidth requirements.
  78.  
  79.      To ensure maximum performance there are many factors which must be taken
  80.      into account including :
  81.  
  82.           o Hardware requirements and constraints.
  83.           o Kernel disk driver constraints.
  84.           o XLV striped driver operation.
  85.           o Page alignment constraints of readv()/writev().
  86.           o Alignment constraints imposed by using direct I/O.
  87.           o Application specific requirements.
  88.  
  89.      To satisfy all these constraints, compromises have to be made which
  90.      ultimately culminate in using an I/O request size rounded up to an
  91.      appropriate alignment boundary. That is, you have to add padding to each
  92.      element of your data set ( eg. frame of video ) to guarantee alignment,
  93.      and hence optimal disk performance, for all elements of the data set.
  94.  
  95.      Calculation of this padding factor is not a trivial problem. This tool
  96.      automates the process all the way to the point of generating the
  97.      appropriate script file for _x_l_v__m_a_k_e to create the volume.
  98.  
  99. RRRREEEEQQQQUUUUEEEESSSSTTTT SSSSIIIIZZZZEEEE AAAALLLLIIIIGGGGNNNNMMMMEEEENNNNTTTT
  100.      Choosing an appropriate alignment for the request size is critical to
  101.      achieving optimal disk performance. Badly chosen values can cause poor
  102.      performance or even violate hard constraints which will cause I/O errors
  103.      to be returned to the application.  The rule for choosing a correct
  104.      alignment size is to take the maximum of all the following values :
  105.  
  106.      DDDDeeeevvvviiiicccceeee ddddeeeeppppeeeennnnddddeeeennnntttt mmmmiiiinnnniiiimmmmuuuummmm rrrreeeeqqqquuuueeeesssstttt ssssiiiizzzzeeee
  107.           Check whether the disk devices have any constraints on the minimum
  108.           allowed request size.  For example, MaxStrat Gen5 disk arrays can be
  109.           configured with 64KB block size which is the minimum allowed
  110.           transfer size.
  111.  
  112.      FFFFiiiilllleeeessssyyyysssstttteeeemmmm bbbblllloooocccckkkk ssssiiiizzzzeeee
  113.           The use of direct I/O requires that the request size be a multiple
  114.           of the filesystem block size.  This block size is chosen at the time
  115.           the filesystem is built with _m_k_f_s.
  116.  
  117.           eg. # mkfs -b size=16384 /dev/xlv/video
  118.  
  119.      SSSSyyyysssstttteeeemmmm ppppaaaaggggeeee ssssiiiizzzzeeee iiiiffff uuuussssiiiinnnngggg _r_e_a_d_v(((())))////_w_r_i_t_e_v(((())))
  120.           If the application makes use of the scatter/gather I/O mechanism
  121.           provided by the _r_e_a_d_v()/_w_r_i_t_e_v() system calls then the operating
  122.           system requires all requests to be system page size aligned.  The
  123.           system page size is typically 16KB, but can be determined from the
  124.           shell using _s_y_s_c_o_n_f with the PAGESIZE argument.
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))                                                      ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))
  137.  
  138.  
  139.  
  140. DDDDEEEEVVVVIIIICCCCEEEE TTTTEEEEMMMMPPPPLLLLAAAATTTTEEEE FFFFOOOORRRRMMMMAAAATTTT
  141.      The device template format is a syntax for specifying lists of devices in
  142.      a very compact and convenient way.  A template is a string with embedded
  143.      numeric patterns, which allow a single string to represent many device
  144.      names.  This is expecially useful specifying groups of disk devices
  145.      making up a striped volume.  An example of a template representing
  146.      partition 7 on disks 1 to 4 on SCSI controller 9 is :
  147.  
  148.           ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss9999dddd[[[[1111----4444]]]]ssss7777
  149.  
  150.      The template syntax allows numeric patterns to be inserted into a string
  151.      using the square bracket delimiters. The pattern may also contain control
  152.      sequences inside the square brackets which modify the way the pattern is
  153.      evaluated. For example, ''''[[[[zzzz3333,,,,1111----3333]]]]'''' causes all numbers generated by this
  154.      pattern to be zero padded to three digits and thus represents the
  155.      sequence "000000001111","000000002222","000000003333".
  156.  
  157.      The supported pattern controls are as follows :
  158.  
  159.      <<<<nnnn>>>>  This is the simplest of components and simply represents a single
  160.           number. Any number of these controls may appear in a pattern.  For
  161.           example,
  162.  
  163.           ''''tttteeeesssstttt[[[[1111,,,,55557777,,,,11113333]]]]'''' produces "tttteeeesssstttt1111","tttteeeesssstttt55557777","tttteeeesssstttt11113333"
  164.  
  165.      <<<<mmmm>>>>----<<<<nnnn>>>>
  166.           Appends the range of numbers from mmmm to nnnn with increment ( set with
  167.           iiii<<<<nnnn>>>> ) to the sequence.  nnnn may be less mmmm implying that the range
  168.           will run backwards from mmmm to nnnn with specified increment. Note that nnnn
  169.           may not actually appear into the output sequence for increments
  170.           greater than one as no numbers outside the specified range will be
  171.           produced.  For example,
  172.  
  173.           ''''xxxx[[[[1111----3333,,,,99999999----99997777]]]]'''' produces "xxxx1111","xxxx2222","xxxx3333","xxxx99999999","xxxx99998888","xxxx99997777"
  174.  
  175.      iiii<<<<nnnn>>>> Sets the increment for all range controls in this pattern.  Only one
  176.           of these controls may appear in a single pattern.
  177.  
  178.           ''''[[[[iiii3333,,,,1111----8888,,,,666666666666,,,,99999999----99997777]]]]'''' produces "1111","4444","7777","666666666666","99999999"
  179.  
  180.      zzzz<<<<nnnn>>>> Sets the number of digits to which all numbers produced by the
  181.           pattern will be zero padded.  For example,
  182.  
  183.           ''''[[[[iiii3333,,,,zzzz3333,,,,1111----5555,,,,666666666666,,,,99999999----99997777]]]]'''' produces "000000001111","000000004444","666666666666","000099999999"
  184.  
  185.      pppp<<<<nnnn>>>> As multiple patterns may appear in a single template string, it is
  186.           sometimes important to be able to control the order of evaluation of
  187.           the patterns.  This is especially important with when specifying
  188.           disk devices for striping as order of device specification to
  189.           _x_l_v__m_a_k_e is critical to achieve optimal performance.  This control
  190.           sets the priority of evaluation for the pattern. The default
  191.           priority for a pattern is one and evaluation order of patterns with
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))                                                      ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))
  203.  
  204.  
  205.  
  206.           equal priority is from right to left in the string. Patterns with
  207.           the lowest priority values are evaluated first. Only one of these
  208.           controls may appear in a single pattern. For example,
  209.  
  210.           ''''////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss[[[[1111,,,,2222]]]]dddd[[[[3333,,,,4444]]]]ssss7777'''' produces
  211.  
  212.           "////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss1111dddd3333ssss7777"
  213.           "////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss1111dddd4444ssss7777"
  214.           "////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss2222dddd3333ssss7777"
  215.           "////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss2222dddd4444ssss7777"
  216.  
  217.           whereas ''''////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss[[[[pppp0000,,,,1111,,,,2222]]]]dddd[[[[3333,,,,4444]]]]ssss7777'''' produces
  218.  
  219.           "////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss1111dddd3333ssss7777"
  220.           "////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss2222dddd3333ssss7777"
  221.           "////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss1111dddd4444ssss7777"
  222.           "////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss2222dddd4444ssss7777"
  223.  
  224. EEEEXXXXAAAAMMMMPPPPLLLLEEEE ####1111 :::: SSSSTTTTRRRRIIIIPPPPIIIINNNNGGGG FFFFOOOORRRR VVVVIIIIDDDDEEEEOOOO SSSSTTTTRRRREEEEAAAAMMMMIIIINNNNGGGG
  225.      In this example it will be shown how to configure an XLV striped volume
  226.      for storing uncompressed CCIR-601 NTSC fields. These fields will be
  227.      stored in native YCrCb ( sometimes referred to as YUV ) color space which
  228.      requires 2 bytes per pixel. To achieve real time playback at 60 fields
  229.      per second the volume will have to sustain a bandwidth of approximately
  230.      22MB/s. The volume will be configured using four UltraSCSI disks on the
  231.      internal controller 0 of an Origin2000 or Onyx2.
  232.  
  233.    PPPPaaaarrrraaaammmmeeeetttteeeerrrrssss
  234.      The parameters of interest for configuration of the XLV striped volume
  235.      are as follows :
  236.  
  237.           IIIImmmmaaaaggggeeee wwwwiiiiddddtttthhhh   ==== 777722220000 ppppiiiixxxxeeeellllssss (((( CCCCCCCCIIIIRRRR----666600001111 ))))
  238.           IIIImmmmaaaaggggeeee hhhheeeeiiiigggghhhhtttt  ==== 222244443333 ppppiiiixxxxeeeellllssss (((( CCCCCCCCIIIIRRRR----666600001111 NNNNTTTTSSSSCCCC ffffiiiieeeelllldddd ))))
  239.           BBBByyyytttteeeessss////ppppiiiixxxxeeeellll   ==== 2222   bbbbyyyytttteeeessss  (((( YYYYCCCCrrrrCCCCbbbb ccccoooolllloooorrrr ssssppppaaaacccceeee ))))
  240.           CCCCoooonnnnttttrrrroooolllllllleeeerrrrssss   ==== 1111   UUUUllllttttrrrraaaaSSSSCCCCSSSSIIII
  241.           DDDDiiiisssskkkkssss////CCCCttttllllrrrr    ==== 4444   UUUUllllttttrrrraaaaSSSSCCCCSSSSIIII ddddiiiisssskkkkssss
  242.  
  243.    CCCCaaaallllccccuuuullllaaaatttteeee RRRReeeeqqqquuuueeeesssstttt SSSSiiiizzzzeeee
  244.      The first parameter we have to calculate is the size of a single CCIR-601
  245.      NTSC field.  The calculation is simple :
  246.  
  247.           RRRReeeeqqqquuuueeeesssstttt SSSSiiiizzzzeeee ==== WWWWiiiiddddtttthhhh **** HHHHeeeeiiiigggghhhhtttt **** BBBByyyytttteeeessss____PPPPeeeerrrr____PPPPiiiixxxxeeeellll
  248.                        ==== 777722220000 **** 222244443333 **** 2222
  249.                        ==== 333344449999999922220000 bbbbyyyytttteeeessss////ffffiiiieeeelllldddd
  250.  
  251.    DDDDeeeetttteeeerrrrmmmmiiiinnnneeee AAAAlllliiiiggggnnnnmmmmeeeennnntttt SSSSiiiizzzzeeee
  252.      Now although we would like to use a 4KB filesystem block size, we would
  253.      also like to have the flexibility of using scatter/gather DMA to improve
  254.      performance. This requires alignment to 16KB page size boundaries for I/O
  255.      requests.  So, we must choose an alignment factor of 16KB.
  256.  
  257.  
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))                                                      ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))
  269.  
  270.  
  271.  
  272.    CCCCoooonnnnssssttttrrrruuuuccccttttiiiinnnngggg tttthhhheeee XXXXLLLLVVVV VVVVoooolllluuuummmmeeee
  273.      Here is the transcript for construction of this volume.
  274.  
  275.      #### ddddiiiisssskkkkaaaalllliiiiggggnnnn ----nnnn vvvviiiiddddeeeeoooo ----rrrr333344449999999922220000 ----aaaa11116666kkkk ''''////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss0000dddd[[[[2222----5555]]]]ssss7777'''' |||| tttteeeeeeee
  276.      ////ttttmmmmpppp////xxxxllllvvvv....ssssccccrrrriiiipppptttt
  277.      # Number of devices     =       4
  278.      # Filesystem block size =   16384 bytes
  279.      # Desired request size  =  349920 bytes
  280.      # Aligned request size  =  360448 bytes
  281.      # Alignment padding     =   10528 bytes
  282.      # Padding I/O overhead  =    3.01 %
  283.      #
  284.      vol video
  285.      data
  286.      plex
  287.      ve -force -stripe -stripe_unit 176 \
  288.      /dev/dsk/dks0d2s7 \
  289.      /dev/dsk/dks0d3s7 \
  290.      /dev/dsk/dks0d4s7 \
  291.      /dev/dsk/dks0d5s7
  292.      end
  293.      exit
  294.      #### xxxxllllvvvv____mmmmaaaakkkkeeee <<<< ////ttttmmmmpppp////xxxxllllvvvv....ssssccccrrrriiiipppptttt
  295.      video
  296.      video.data
  297.      video.data.0
  298.      video.data.0.0
  299.      Object specification completed
  300.      #### mmmmkkkkffffssss ////ddddeeeevvvv////xxxxllllvvvv////vvvviiiiddddeeeeoooo
  301.      #### mmmmkkkkddddiiiirrrr ////vvvviiiiddddeeeeoooo
  302.      #### cccchhhhmmmmoooodddd 777777777777 ////vvvviiiiddddeeeeoooo
  303.      #### mmmmoooouuuunnnntttt ////ddddeeeevvvv////xxxxllllvvvv////vvvviiiiddddeeeeoooo ////vvvviiiiddddeeeeoooo
  304.  
  305.    IIIInnnntttteeeerrrrpppprrrreeeettttaaaattttiiiioooonnnn ooooffff RRRReeeessssuuuullllttttssss
  306.      As can be seen in the script comments, padding was added to the size of
  307.      each field to achieve the required alignment.  The application must read
  308.      or write 360448 bytes for each field, which includes the field data as
  309.      well as the padding to maintain alignment and hence optimal disk
  310.      performance for this configuration.  The padding is only giving a 3.01%
  311.      overhead in size and bandwidth.
  312.  
  313. EEEEXXXXAAAAMMMMPPPPLLLLEEEE ####2222 :::: SSSSTTTTRRRRIIIIPPPPIIIINNNNGGGG FFFFOOOORRRR HHHHIIIIGGGGHHHH RRRREEEESSSSOOOOLLLLUUUUTTTTIIIIOOOONNNN SSSSTTTTRRRREEEEAAAAMMMMIIIINNNNGGGG
  314.      In this example it will be shown how to configure an XLV striped volume
  315.      for storing uncompressed high resolution images for real time preview
  316.      purposes.  The resolution of the images is 2048 pixels by 1120 lines. The
  317.      images are stored using 8-bit RGB color space which requires 3 bytes per
  318.      pixel.  The disk storage subsystem is composed of 20 fibre channel disks
  319.      connected to a dual channel XIO fibre channel adapter, with 10 disks
  320.      connected to each channel.
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334. ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))                                                      ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))
  335.  
  336.  
  337.  
  338.    PPPPaaaarrrraaaammmmeeeetttteeeerrrrssss
  339.      The parameters of interest for configuration of the XLV striped volume
  340.      are as follows :
  341.  
  342.           IIIImmmmaaaaggggeeee wwwwiiiiddddtttthhhh   ==== 2222000044448888 ppppiiiixxxxeeeellllssss
  343.           IIIImmmmaaaaggggeeee hhhheeeeiiiigggghhhhtttt  ==== 1111111122220000 lllliiiinnnneeeessss
  344.           BBBByyyytttteeeessss////ppppiiiixxxxeeeellll   ==== 3333    bbbbyyyytttteeeessss  (((( 8888----bbbbiiiitttt RRRRGGGGBBBB ccccoooolllloooorrrr ssssppppaaaacccceeee ))))
  345.           CCCCoooonnnnttttrrrroooolllllllleeeerrrrssss   ==== 2222    XXXXIIIIOOOO FFFFiiiibbbbrrrreeee CCCChhhhaaaannnnnnnneeeellll
  346.           DDDDiiiisssskkkkssss////CCCCttttllllrrrr    ==== 11110000   FFFFiiiibbbbrrrreeee CCCChhhhaaaannnnnnnneeeellll ddddiiiisssskkkkssss
  347.  
  348.    CCCCaaaallllccccuuuullllaaaatttteeee RRRReeeeqqqquuuueeeesssstttt SSSSiiiizzzzeeee
  349.      The first parameter we have to calculate is the size of a single high
  350.      resolution frame.  The calculation is simple :
  351.  
  352.           RRRReeeeqqqquuuueeeesssstttt SSSSiiiizzzzeeee ==== WWWWiiiiddddtttthhhh **** HHHHeeeeiiiigggghhhhtttt **** BBBByyyytttteeeessss____PPPPeeeerrrr____PPPPiiiixxxxeeeellll
  353.                        ==== 2222000044448888 **** 1111111122220000 **** 3333
  354.                        ==== 6666888888881111222288880000 bbbbyyyytttteeeessss////ffffrrrraaaammmmeeee
  355.  
  356.    DDDDeeeetttteeeerrrrmmmmiiiinnnneeee AAAAlllliiiiggggnnnnmmmmeeeennnntttt SSSSiiiizzzzeeee
  357.      Because of the large request size we choose a 16KB filesystem block size
  358.      which also makes scatter/gather DMA possible.  Thus, we select a 16KB
  359.      alignment.
  360.  
  361.    CCCCoooonnnnssssttttrrrruuuuccccttttiiiinnnngggg tttthhhheeee XXXXLLLLVVVV VVVVoooolllluuuummmmeeee
  362.      Here is the transcript for construction of this volume.
  363.  
  364.      #### ddddiiiisssskkkkaaaalllliiiiggggnnnn ----nnnn ffffiiiillllmmmm ----rrrr6666888888881111222288880000 ----aaaa11116666kkkk ''''////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss[[[[pppp0000,,,,11110000,,,,11111111]]]]dddd[[[[0000----9999]]]]ssss7777'''' ||||
  365.      tttteeeeeeee ////ttttmmmmpppp////xxxxllllvvvv....ssssccccrrrriiiipppptttt
  366.      # Number of devices     =      20
  367.      # Filesystem block size =   16384 bytes
  368.      # Desired request size  = 6881280 bytes
  369.      # Aligned request size  = 6881280 bytes
  370.      # Alignment padding     =       0 bytes
  371.      # Padding I/O overhead  =    0.00 %
  372.      #
  373.      vol film
  374.      data
  375.      plex
  376.      ve -force -stripe -stripe_unit 672 \
  377.      /dev/dsk/dks10d0s7 \
  378.      /dev/dsk/dks11d0s7 \
  379.      /dev/dsk/dks10d1s7 \
  380.      /dev/dsk/dks11d1s7 \
  381.      /dev/dsk/dks10d2s7 \
  382.      /dev/dsk/dks11d2s7 \
  383.      /dev/dsk/dks10d3s7 \
  384.      /dev/dsk/dks11d3s7 \
  385.      /dev/dsk/dks10d4s7 \
  386.      /dev/dsk/dks11d4s7 \
  387.      /dev/dsk/dks10d5s7 \
  388.  
  389.  
  390.  
  391.  
  392.  
  393.                                                                         PPPPaaaaggggeeee 6666
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400. ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))                                                      ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))
  401.  
  402.  
  403.  
  404.      /dev/dsk/dks11d5s7 \
  405.      /dev/dsk/dks10d6s7 \
  406.      /dev/dsk/dks11d6s7 \
  407.      /dev/dsk/dks10d7s7 \
  408.      /dev/dsk/dks11d7s7 \
  409.      /dev/dsk/dks10d8s7 \
  410.      /dev/dsk/dks11d8s7 \
  411.      /dev/dsk/dks10d9s7 \
  412.      /dev/dsk/dks11d9s7
  413.      end
  414.      exit
  415.      #### xxxxllllvvvv____mmmmaaaakkkkeeee <<<< ////ttttmmmmpppp////xxxxllllvvvv....ssssccccrrrriiiipppptttt
  416.      film
  417.      film.data
  418.      film.data.0
  419.      film.data.0.0
  420.      Object specification completed
  421.      #### mmmmkkkkffffssss ----bbbb ssssiiiizzzzeeee====11116666333388884444 ////ddddeeeevvvv////xxxxllllvvvv////ffffiiiillllmmmm
  422.      #### mmmmkkkkddddiiiirrrr ////ffffiiiillllmmmm
  423.      #### cccchhhhmmmmoooodddd 777777777777 ////ffffiiiillllmmmm
  424.      #### mmmmoooouuuunnnntttt ////ddddeeeevvvv////xxxxllllvvvv////ffffiiiillllmmmm ////ffffiiiillllmmmm
  425.  
  426.    IIIInnnntttteeeerrrrpppprrrreeeettttaaaattttiiiioooonnnn ooooffff RRRReeeessssuuuullllttttssss
  427.      As can be seen in the script comments, we were fortunate in that the
  428.      frame size was already aligned correctly. Because of this, the requests
  429.      we already aligned and hence we have no padding overhead !!
  430.  
  431. TTTTIIIIPPPPSSSS AAAANNNNDDDD TTTTRRRRIIIICCCCKKKKSSSS
  432.      Here are a few tips for getting the most from a disk configuration.
  433.  
  434.    HHHHoooommmmooooggggeeeennnnoooouuuussss DDDDiiiisssskkkkssss
  435.      Ensure that all the disks in the volume are the same model. The
  436.      performance of the striped volume is directly dependent on the slowest
  437.      disk in the volume. One slow disk can affect the performance of the
  438.      entire volume.
  439.  
  440.    FFFFiiiirrrrmmmmwwwwaaaarrrreeee RRRReeeevvvviiiissssiiiioooonnnnssss
  441.      Confirm that all the disks in the volume have the same firmware revision.
  442.      Different revisions may have different performance characteristics which
  443.      may adversely affect performance. The firmware revision of a disk can be
  444.      checked with _f_x. The _d_i_s_k_p_r_e_p utility can be used with SGI IBM Scorpion
  445.      UltraSCSI disks to automatically download the latest firmware revision.
  446.  
  447.    DDDDiiiisssskkkk PPPPaaaarrrraaaammmmeeeetttteeeerrrr SSSSeeeettttttttiiiinnnnggggssss
  448.      Ensure that all disks have the same parameter settings. For example, if
  449.      you enable write buffering on all the disks of a striped XLV volume
  450.      except one, the write performance will be constrained to the performance
  451.      of this single slow disk. The same applies for number of cache segments
  452.      and many other parameters. These can be checked with _f_x.  The _d_i_s_k_p_r_e_p
  453.      utility can be used with SGI IBM Scorpion UltraSCSI disks to
  454.      automatically set all the parameters to SGI manufacturing defaults.
  455.  
  456.  
  457.  
  458.  
  459.                                                                         PPPPaaaaggggeeee 7777
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466. ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))                                                      ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))
  467.  
  468.  
  469.  
  470.    EEEEnnnnaaaabbbblllleeee WWWWrrrriiiitttteeee BBBBuuuuffffffffeeeerrrriiiinnnngggg
  471.      To achieve good write performance you can enable write buffering on all
  472.      the disks in the volume.  Note that this does open a window of
  473.      vulnerability for disk corruption so you should carefully evaluate the
  474.      data integrity needs of your application before enabling write buffering.
  475.      This can be set manually using _f_x or automatically using the _d_i_s_k_p_r_e_p
  476.      utility if using SGI IBM Scorpion UltraSCSI disks.
  477.  
  478.    SSSSeeeetttt NNNNuuuummmmbbbbeeeerrrr OOOOffff CCCCaaaacccchhhheeee SSSSeeeeggggmmmmeeeennnnttttssss
  479.      The effect of the parameter is disk vendor specific, but is applicable to
  480.      the SGI IBM Scorpion UltraSCSI disks. For data streaming applications
  481.      setting the number of cache segments to 1 can give a significant
  482.      performance boost due to much better onboard disk cache utilization. This
  483.      can be set manually using _f_x or automatically using the _d_i_s_k_p_r_e_p utility
  484.      if using SGI IBM Scorpion UltraSCSI disks.
  485.  
  486.    IIIItttteeeerrrraaaatttteeee CCCCoooonnnnttttrrrroooolllllllleeeerrrrssss FFFFiiiirrrrsssstttt
  487.      Because of the way the striped XLV driver works, it is much more
  488.      efficient to iterate across controllers first and disks second when
  489.      specifying devices to be striped. The pattern priority control pppp<<<<nnnn>>>> can
  490.      be used to achieve this. To illustrate, the two templates below specify
  491.      the same devices for a volume, but in different orders. The volume
  492.      generated by the first pattern achieves better performance than the the
  493.      second.
  494.  
  495.           ''''////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss[[[[pppp0000,,,,1111----3333]]]]dddd[[[[4444----6666]]]]ssss7777'''' which represents
  496.  
  497.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss1111dddd4444ssss7777
  498.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss2222dddd4444ssss7777
  499.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss3333dddd4444ssss7777
  500.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss1111dddd5555ssss7777
  501.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss2222dddd5555ssss7777
  502.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss3333dddd5555ssss7777
  503.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss1111dddd6666ssss7777
  504.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss2222dddd6666ssss7777
  505.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss3333dddd6666ssss7777
  506.  
  507.           performs better than ''''////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss[[[[1111----3333]]]]dddd[[[[4444----6666]]]]ssss7777''''
  508.  
  509.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss1111dddd4444ssss7777
  510.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss1111dddd5555ssss7777
  511.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss1111dddd6666ssss7777
  512.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss2222dddd4444ssss7777
  513.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss2222dddd5555ssss7777
  514.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss2222dddd6666ssss7777
  515.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss3333dddd4444ssss7777
  516.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss3333dddd5555ssss7777
  517.                ////ddddeeeevvvv////ddddsssskkkk////ddddkkkkssss3333dddd6666ssss7777
  518.  
  519.    VVVVeeeerrrriiiiffffyyyy VVVVoooolllluuuummmmeeee PPPPeeeerrrrffffoooorrrrmmmmaaaannnncccceeee
  520.      The _d_i_s_k_p_e_r_f utility can be used to measure the performance of striped
  521.      volume once it has been configured. This will allow you to determine in
  522.  
  523.  
  524.  
  525.                                                                         PPPPaaaaggggeeee 8888
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532. ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))                                                      ddddiiiisssskkkkaaaalllliiiiggggnnnn((((1111))))
  533.  
  534.  
  535.  
  536.      advance if a configuration is adequate for a particular application.
  537.  
  538. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  539.      diskprep(1M), diskperf(1M), read(2), write(2), readv(2), writev(2),
  540.      xlv_make(1M), mkfs(1M), sysconf(1)
  541.  
  542. NNNNOOOOTTTTEEEESSSS
  543.      None
  544.  
  545. AAAAUUUUTTTTHHHHOOOORRRR
  546.      Will McGovern ( willmc@sgi.com )
  547.      Advanced Entertainment Systems Division
  548.      Silicon Graphics Inc.
  549.  
  550.  
  551.  
  552.  
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.                                                                         PPPPaaaaggggeeee 9999
  592.  
  593.  
  594.  
  595.